package to4.client;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class wijzigEmailWachtwoord{
	private ZonderHome ZH;
	private String nieuwEmail;
	public wijzigEmailWachtwoord(ZonderHome thema5){

		this.ZH = thema5;
	}
	public Panel createPage(final String email){
		FlowPanel eindPanel = new FlowPanel();
		VerticalPanel vertpan = new VerticalPanel();
		HorizontalPanel hor1 = new HorizontalPanel();
		HorizontalPanel hor5 = new HorizontalPanel();
		HorizontalPanel hor6 = new HorizontalPanel();
		Label labWijzig = new Label("Wijzig E-mail");
		labWijzig.addStyleName("labWijzigkop");
		Label labEmail = new Label("oud e-mailadres:");
		labEmail.addStyleName("labWijzig");
		final TextBox textEmail = new TextBox();
		textEmail.addStyleName("textWijzig");
		Label labEmail2 = new Label("nieuw e-mailadres:");
		labEmail2.addStyleName("labWijzig");
		final TextBox textEmail2 = new TextBox();
		textEmail2.addStyleName("textWijzig");
		Label labEmail3 = new Label("nieuw e-mailadres nogmaals:");
		labEmail3.addStyleName("labWijzig");
		final TextBox textEmail3 = new TextBox();
		textEmail3.addStyleName("textWijzig");
		
		final Button wijzig = new Button("Wijzig");
		wijzig.addStyleName("buttonWijzig");
		final Image goed13 = new Image("vink.png");
		goed13.setVisible(false);
		final Image fout13 = new Image("kruis.png");
		fout13.setVisible(false);
		final Image goed14 = new Image("vink.png");
		goed14.setVisible(false);
		final Image fout14 = new Image("kruis.png");
		fout14.setVisible(false);
		final Image goed15 = new Image("vink.png");
		goed15.setVisible(false);
		final Image fout15 = new Image("kruis.png");
		fout15.setVisible(false);
		textEmail.addKeyUpHandler(new KeyUpHandler() {
			@Override
			public void onKeyUp(KeyUpEvent event) {
				if (textEmail.getText().trim().equals(email.trim())) {
					goed13.setVisible(true);
					fout13.setVisible(false);
				}
				else {
					goed13.setVisible(false);
					fout13.setVisible(true);  	   
				}
			}
		}); 

		textEmail2.addKeyUpHandler(new KeyUpHandler() {
			@Override
			public void onKeyUp(KeyUpEvent event) {
				if (textEmail2.getText().matches("^[a-zA-Z0-9.-_]{3,}@[a-zA-Z0-9]+\\.[a-zA-Z.]{1,5}[a-zA-Z]$")) {
					goed14.setVisible(true);
					fout14.setVisible(false);
				}
		

				else {
					goed14.setVisible(false);
					fout14.setVisible(true);  

				}
				textEmail3.setText("");
				goed15.setVisible(false);
				fout15.setVisible(false);
			}
		});  

		textEmail3.addKeyUpHandler(new KeyUpHandler() {
			@Override
			public void onKeyUp(KeyUpEvent event) {
				if (textEmail3.getText().matches("^[a-zA-Z0-9.-_]{3,}@[a-zA-Z0-9]+\\.[a-zA-Z.]{1,5}[a-zA-Z]$") && textEmail2.getText().equals(textEmail3.getText())) {
					goed15.setVisible(true);
					fout15.setVisible(false);
				}
				else {
					goed15.setVisible(false);
					fout15.setVisible(true);     
				}
			}
		});
		wijzig.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				final String Nemail = textEmail3.getText().trim();
				if(goed13.isVisible()==true&&goed14.isVisible()==true&&goed15.isVisible()){
					AsyncCallback<Boolean> bestaatMail = new AsyncCallback<Boolean>() {
						@Override
						public void onFailure(Throwable caught) {
							// TODO Auto-generated method stub
						}
						@Override
						public void onSuccess(Boolean result) {
							if (result == true){
								AsyncCallback<Boolean> wijzigMail = new AsyncCallback<Boolean>() {
									@Override
									public void onFailure(Throwable caught) {
										Window.alert("Uw e-mailadres en wachtwoord zijn ongewijzigd");
									}
									@Override
									public void onSuccess(Boolean result) {
										if(result==true){
											Window.alert("Emailadres succesvol gewijzigzigd");
											ZH.thema.showZonderHome(Nemail);
										}
										if(result == false){
											Window.alert("Emailadres niet succesvol gewijzigd");
										}
									}
								};
								ZH.thema.myService.wijzigEmail(email, nieuwEmail, wijzigMail);

							}
						}
					};
					ZH.thema.myService.heeftInlog(Nemail, bestaatMail);
				}
			}
		});



		hor1.add(labEmail);
		hor1.add(textEmail);
		hor1.add(goed13);
		hor1.add(fout13);
		hor5.add(labEmail2);
		hor5.add(textEmail2);
		hor5.add(goed14);
		hor5.add(fout14);
		hor6.add(labEmail3);
		hor6.add(textEmail3);
		hor6.add(goed15);
		hor6.add(fout15);
		vertpan.add(labWijzig);
		vertpan.add(hor1);
		vertpan.add(hor5);
		vertpan.add(hor6);
		vertpan.add(wijzig);
		eindPanel.add(vertpan);
		return eindPanel;
	}
}
